/*********************************************
 作者   ： 胡秋峰
 版本   ： V1.0
 描述   ： 逻辑实验 汇编电灯
 其他   ： 无
 *********************************************/

 .global _start /* 全局标号 */

/********
 * 描述： _start函数，程序从此函数开始运行函数功能为时钟使能
         GPIO初始化，控制GPIO来点亮LED灯
 */
_start:
    /* 例程代码 */
    /* 1、使能所有时钟 */
    ldr r0, =0X020C4068 /* CCGR0 */
    ldr r1, =0XFFFFFFFF
    str r1, [r0]        /* CCGR0 = 0XFFFFFFFF */

    ldr r0, = 0X020C406C /* CCGR1 */
    str r1, [r0]        /* CCGR1 = 0XFFFFFFFF */
    
    ldr r0, = 0X020C4070 /* CCGR2 */
    str r1, [r0]        /* CCGR2 = 0XFFFFFFFF */

    ldr r0, = 0X020C4074 /* CCGR3 */
    str r1, [r0]        /* CCGR3 = 0XFFFFFFFF */

    ldr r0, = 0X020C4078 /* CCGR4 */
    str r1, [r0]        /* CCGR4 = 0XFFFFFFFF */

    ldr r0, = 0X020C407C /* CCGR5 */
    str r1, [r0]        /* CCGR5 = 0XFFFFFFFF */

    ldr r0, = 0X020C4080 /* CCGR6 */
    str r1, [r0]        /* CCGR6 = 0XFFFFFFFF */

    /* 2、设置GPIO1_IO03复用为GPIO01_IO03 */
    ldr r0, =0X020E0068 /* SW_MUX_GPIO1_IO03_BASE */
    ldr r1, =0X5        
    str r1, [r0]        /* SW_MUX_GPIO1_IO03_BASE = 0X5 */

    /* 3、配置GPIO01_IO03的IO属性
     *bit 16:0 HYS关闭
     *bit [15:14]: 00 默认下拉
     *bit [13]: 0 kepper功能
     *bit [12]: 1 pull/keeper使能
     *bit [7:6]: 10 速度100Mhz
     *bit [5:3]: 110 R0/6驱动能力
     *bit [0]: 0 低转换率
     *0001000010110000=0X10B0
     */
    ldr r0, =0X020E02F4 /* SW_PAD_GPIO1_IO03_BASE */
    ldr r1, =0X10B0
    str r1, [r0]

    /* 4、设置GPIO01_IO03为输出 */
    ldr r0, =0X0209C004 /* GPIO1_GDIR */
    ldr r1, =0X8
    str r1, [r0]

    /* 5、打开LED0
     * 设置GPIO01_IO03输出低电平
     */
    ldr r0, =0X2009C000 /* GPIO1_DR */
    ldr r1, =0
    str r1, [r0]

/*
 * 描述： loop死循环
 */
loop:
	b loop 	
